r شرطی به راحتی قابل جابجایی است
خارج از مشروط بیرونی به طور کلی برنامه نویسی بلوکی و اثرات انجام دادن
بنابراین به راحتی قابل پیش بینی هستند. }
اگر دستمزد > supertax_threshold سپس شروع کنید
supertax_country := true;
supertax := (دستمزدها - supertax_threshold) * supertax_rate
پایان
دیگر شروع شود
supertax_country := false;
فوق مالیات: = 0
پایان
پایان
دیگر شروع شود
مالیات کشور := نادرست; supertax_country := false;
مالیات := 0; فوق مالیات: = 0
پایان؛
مالیات := دستمزد - مالیات - فوق مالیات;
استفاده از بلوک ها در قطعه فوق از پاسکال، هدف برنامه برنامه نویسی بلوکی نویس را روشن می کند و ترکیب بلوک های به دست آمده را در سلسله مراتبی تودرتو از عبارات شرطی امکان پذیر می کند. ساختار کد تفکر برنامه نویس را با دقت بیشتری منعکس می کند و درک و اصلاح آن را آسان تر می کند.
کد منبع بالا را می توان با خارج کردن دستور if درونی برنامه نویسی بلوکی از بیرونی و قرار دادن دو بلوک یکی پس از دیگری برای اجرای متوالی واضح تر کرد. از نظر معنایی تفاوت کمی در این مورد وجود دارد، و استفاده از ساختار بلوک، که با تورفتگی برای خوانایی پشتیبانی میشود، باعث میشود برنامهنویس به راحتی کد را تغییر دهد.
در زبان های ابتدایی، متغیرها دامنه وسیعی داشتند. به عنوان مثال، یک متغیر عدد صحیح به نام IEMPNO ممکن است در بخشی از یک زیربرنامه فرترن برای نشان دادن شماره تامین اجتماعی کارمند (ssn) استفاده شود، اما در حین کار تعمیر و نگهداری روی همان زیربرنامه، یک برنامه نویس ممکن است به طور تصادفی از همان متغیر، IEMPNO، استفاده کند. یک هدف متفاوت، و این می تواند منجر به یک اشکال شود که ردیابی آن برنامه نویسی بلوکی دشوار است. ساختار بلوک کنترل دامنه را در یک سطح دقیقه برای برنامه نویسان آسان تر می کند.
;; زبان: طرح استاندارد R5RS
(بگذارید ((empno (ssn-of کارمند-نام)))
(در حالی که (is-manager empno)
(بگذارید ((کارمندان (طول (عزیزان empno))))
(printf "~a دارای ~یک کارمند دارد که زیر نظر او کار می کنند:~%" کارمندان-نام کارکنان)
(برای هر
(لامبدا (امپنو)
;; در این عبارت لامبدا، متغیر empno به ssn اشاره دارد
;; یک زیردست متغیر empno در عبارت بیرونی،
;; با اشاره به ssn مدیر، در سایه است.
(printf "نام: ~a، نقش: ~a~%"
(نام empno)
(نقش امپنو)))
( زیر دستان امپنو )))))
در قطعه Scheme بالا، empno برای شناسایی برنامه نویسی بلوکی هر یک از مدیران و زیرمجموعههای آنها با ssn مربوطه استفاده میشود، اما از آنجایی که ssn زیردریایی در یک بلوک داخلی اعلام شده است، با متغیری به همین نام که حاوی ssn مدیر است تعامل ندارد. . در عمل، ملاحظات وضوح احتمالاً برنامه نویس را به انتخاب نام متغیرهای متمایز سوق می دهد، اما آنها حق انتخاب دارند و معرفی سهوا یک باگ دشوارتر است.
بالا بردن
در برخی از زبان ها، یک متغیر را می توان در آموزش برنامه نویسی کودکان و نوجوانان محدوده تابع حتی در بلوک های محصور اعلام کرد. به عنوان مثال، در جاوا اسک برنامه نویسی بلوکی ریپت، متغیرهای اعلام شده با var دارای محدوده تابع هستند.
همچنین ببینید
نماد پورتال برنامه نویسی کامپیوتر
بلوک اصلی
محدوده را مسدود کنید
بسته شدن (برنامه نویسی کامپیوتری)
جریان را کنترل کنید
منابع
پرلیس، ای.جی. ساملسون، ک. (1958). «گزارش مقدماتی: زبان جبری بینالمللی». ارتباطات ACM. 1 (12). نیویورک، نیویورک، ایالات متحده آمریکا: ACM: 8–22. doi: 10.1145/377924.594925. S2CID 28755282.
Backus، J.W. بائر، F.L. گرین، جی. کاتز، سی. مک کارتی، جی. پرلیس، ای.جی. روتیشاوزر، اچ. ساملسون، ک. وکوئیس، بی. وگشتاین، جی.اچ. ون وینجگاردن، ای. Woodger, M. (مه 1960). ناور، پیتر (ویرایش). "گزارش در مورد زبان الگوریتمی ALGOL 60". ارتباطات ACM. 3 (5). نیویورک، نیویورک، ایالات متحده آمریکا: ACM: 299–314. doi: 10.1145/367236.367262. ISSN 0001-0782. S2CID 278290. Retrieved 2009-10-27.
vte
پارادایم های برنامه نویسی (مقایسه بر اساس زبان)
امری ضروری
ساختار یافته
ساختارهای جکسون با ساختار بلوکی مدولار غی برنامه نویسی بلوکی ر ساختارمندبرنامهنویسی رویهای در ابعاد بزرگ و کوچک طراحی با تابع تودرتو مبتنی بر قرارداد
شی گرا
(مقایسه، فهرست)
AgentClass-basedPrototype-basedObject-basedImmutable object PersistentUniform Call Syntax
اعلامی
عملکردی
(مقایسه)
تابع ناشناس بازگشتی (کاربرد جزئی) مرتبه بالاتر کاملاً عملکردیTotalStrictGADTsانواع وابسته منطق عملکردی سبک بدون نقطه بیان محور کاربرد، Concatenative در سطح تابع، سطح ارزش
گردش داده ها
راکتیو مبتنی بر جریان (واکنشی عملکردی) سیگنالهای جریان همزمان
منطق
منطق ابداکتیو پاسخ مجموعه محدودیت (منطق محدودیت) منطق استقرایی غیر قطعی هستی شناسی منطق احتمالی کوئری
DSL
مدلسازی جبری آرایه مبتنی بر خودکار (عملیات) فرمان (سفینه فضایی) متمایزپذیر کاربر نهایی گرامر توضیحات رابط زبان گرا درک فهرست زبان گرا مدلسازی زبان طبیعی غیر انگلیسی مبتنی بر شرحصفحه لوله ها و فیلترهای محتاطانه-مقطعات محتاطانه TactileTemplating Transformation (بازنویسی Block programming نمودار، تولید، الگو) تصویری
رقیب،
توزیع شده،
موازی
طرد متقابل خودکار مبتنی بر بازیگر
r شرطی به راحتی قابل جابجایی است
خارج از مشروط بیرونی به طور کلی برنامه نویسی بلوکی و اثرات انجام دادن
بنابراین به راحتی قابل پیش بینی هستند. }
اگر دستمزد > supertax_threshold سپس شروع کنید
supertax_country := true;
supertax := (دستمزدها - supertax_threshold) * supertax_rate
پایان
دیگر شروع شود
supertax_country := false;
فوق مالیات: = 0
پایان
پایان
دیگر شروع شود
مالیات کشور := نادرست; supertax_country := false;
مالیات := 0; فوق مالیات: = 0
پایان؛
مالیات := دستمزد - مالیات - فوق مالیات;
استفاده از بلوک ها در قطعه فوق از پاسکال، هدف برنامه برنامه نویسی بلوکی نویس را روشن می کند و ترکیب بلوک های به دست آمده را در سلسله مراتبی تودرتو از عبارات شرطی امکان پذیر می کند. ساختار کد تفکر برنامه نویس را با دقت بیشتری منعکس می کند و درک و اصلاح آن را آسان تر می کند.
کد منبع بالا را می توان با خارج کردن دستور if درونی برنامه نویسی بلوکی از بیرونی و قرار دادن دو بلوک یکی پس از دیگری برای اجرای متوالی واضح تر کرد. از نظر معنایی تفاوت کمی در این مورد وجود دارد، و استفاده از ساختار بلوک، که با تورفتگی برای خوانایی پشتیبانی میشود، باعث میشود برنامهنویس به راحتی کد را تغییر دهد.
در زبان های ابتدایی، متغیرها دامنه وسیعی داشتند. به عنوان مثال، یک متغیر عدد صحیح به نام IEMPNO ممکن است در بخشی از یک زیربرنامه فرترن برای نشان دادن شماره تامین اجتماعی کارمند (ssn) استفاده شود، اما در حین کار تعمیر و نگهداری روی همان زیربرنامه، یک برنامه نویس ممکن است به طور تصادفی از همان متغیر، IEMPNO، استفاده کند. یک هدف متفاوت، و این می تواند منجر به یک اشکال شود که ردیابی آن برنامه نویسی بلوکی دشوار است. ساختار بلوک کنترل دامنه را در یک سطح دقیقه برای برنامه نویسان آسان تر می کند.
;; زبان: طرح استاندارد R5RS
(بگذارید ((empno (ssn-of کارمند-نام)))
(در حالی که (is-manager empno)
(بگذارید ((کارمندان (طول (عزیزان empno))))
(printf "~a دارای ~یک کارمند دارد که زیر نظر او کار می کنند:~%" کارمندان-نام کارکنان)
(برای هر
(لامبدا (امپنو)
;; در این عبارت لامبدا، متغیر empno به ssn اشاره دارد
;; یک زیردست متغیر empno در عبارت بیرونی،
;; با اشاره به ssn مدیر، در سایه است.
(printf "نام: ~a، نقش: ~a~%"
(نام empno)
(نقش امپنو)))
( زیر دستان امپنو )))))
در قطعه Scheme بالا، empno برای شناسایی برنامه نویسی بلوکی هر یک از مدیران و زیرمجموعههای آنها با ssn مربوطه استفاده میشود، اما از آنجایی که ssn زیردریایی در یک بلوک داخلی اعلام شده است، با متغیری به همین نام که حاوی ssn مدیر است تعامل ندارد. . در عمل، ملاحظات وضوح احتمالاً برنامه نویس را به انتخاب نام متغیرهای متمایز سوق می دهد، اما آنها حق انتخاب دارند و معرفی سهوا یک باگ دشوارتر است.
بالا بردن
در برخی از زبان ها، یک متغیر را می توان در آموزش برنامه نویسی کودکان و نوجوانان محدوده تابع حتی در بلوک های محصور اعلام کرد. به عنوان مثال، در جاوا اسک برنامه نویسی بلوکی ریپت، متغیرهای اعلام شده با var دارای محدوده تابع هستند.
همچنین ببینید
نماد پورتال برنامه نویسی کامپیوتر
بلوک اصلی
محدوده را مسدود کنید
بسته شدن (برنامه نویسی کامپیوتری)
جریان را کنترل کنید
منابع
پرلیس، ای.جی. ساملسون، ک. (1958). «گزارش مقدماتی: زبان جبری بینالمللی». ارتباطات ACM. 1 (12). نیویورک، نیویورک، ایالات متحده آمریکا: ACM: 8–22. doi: 10.1145/377924.594925. S2CID 28755282.
Backus، J.W. بائر، F.L. گرین، جی. کاتز، سی. مک کارتی، جی. پرلیس، ای.جی. روتیشاوزر، اچ. ساملسون، ک. وکوئیس، بی. وگشتاین، جی.اچ. ون وینجگاردن، ای. Woodger, M. (مه 1960). ناور، پیتر (ویرایش). "گزارش در مورد زبان الگوریتمی ALGOL 60". ارتباطات ACM. 3 (5). نیویورک، نیویورک، ایالات متحده آمریکا: ACM: 299–314. doi: 10.1145/367236.367262. ISSN 0001-0782. S2CID 278290. Retrieved 2009-10-27.
vte
پارادایم های برنامه نویسی (مقایسه بر اساس زبان)
امری ضروری
ساختار یافته
ساختارهای جکسون با ساختار بلوکی مدولار غی برنامه نویسی بلوکی ر ساختارمندبرنامهنویسی رویهای در ابعاد بزرگ و کوچک طراحی با تابع تودرتو مبتنی بر قرارداد
شی گرا
(مقایسه، فهرست)
AgentClass-basedPrototype-basedObject-basedImmutable object PersistentUniform Call Syntax
اعلامی
عملکردی
(مقایسه)
تابع ناشناس بازگشتی (کاربرد جزئی) مرتبه بالاتر کاملاً عملکردیTotalStrictGADTsانواع وابسته منطق عملکردی سبک بدون نقطه بیان محور کاربرد، Concatenative در سطح تابع، سطح ارزش
گردش داده ها
راکتیو مبتنی بر جریان (واکنشی عملکردی) سیگنالهای جریان همزمان
منطق
منطق ابداکتیو پاسخ مجموعه محدودیت (منطق محدودیت) منطق استقرایی غیر قطعی هستی شناسی منطق احتمالی کوئری
DSL
مدلسازی جبری آرایه مبتنی بر خودکار (عملیات) فرمان (سفینه فضایی) متمایزپذیر کاربر نهایی گرامر توضیحات رابط زبان گرا درک فهرست زبان گرا مدلسازی زبان طبیعی غیر انگلیسی مبتنی بر شرحصفحه لوله ها و فیلترهای محتاطانه-مقطعات محتاطانه TactileTemplating Transformation (بازنویسی Block programming نمودار، تولید، الگو) تصویری
رقیب،
توزیع شده،
موازی
طرد متقابل خودکار مبتنی بر بازیگر

مهمترین مسابقات اسکرچ برای کودکان